# ${tableComment!''} CRUD项目

基于Spring Boot + MyBatis-Plus的${tableComment!''}管理系统

## 项目信息

- **项目名称**: ${tableComment!''} 项目
- **技术栈**: Spring Boot 2.7.18 + MyBatis-Plus + MySQL
- **Java版本**: 11
- **作者**: ${author}
- **创建时间**: ${.now?string("yyyy-MM-dd HH:mm:ss")}

## 功能特性

- ✅ 完整的CRUD操作（增删改查）
- ✅ RESTful API设计
- ✅ Swagger API文档
- ✅ 参数校验
- ✅ 统一异常处理
- ✅ 统一响应格式
- ✅ MyBatis-Plus代码生成
- ✅ 分页查询支持
<#if enableSecurity>
- ✅ 基于Hutool的JWT多租户鉴权
</#if>
<#if enableRedis>
- ✅ Redis缓存与失效控制
</#if>

## 技术架构

```
├── entity/          # 实体类
├── mapper/          # 数据访问层
├── service/         # 业务逻辑层
├── controller/      # 控制器层
└── config/          # 配置类
```

## 快速开始

### 1. 环境要求

- JDK 11+
- Maven 3.6+
- MySQL 8.0+

### 2. 数据库配置

修改 `application.yml` 中的数据库连接信息：

```yaml
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    username: your_username
    password: your_password
```

### 3. 创建数据表

执行以下SQL创建数据表：

```sql
[=originalSql!'-- 请在此处添加建表SQL']
```

### 4. 启动项目

```bash
# 编译项目
mvn clean compile

# 启动项目
mvn spring-boot:run
```

### 5. 访问接口

- **Swagger文档**: http://localhost:8080/swagger-ui.html
- **API接口**: http://localhost:8080/api/${tableName?lower_case}

## API接口说明

### 基础CRUD接口

| 方法 | 路径 | 说明 |
|------|------|------|
| GET | `/api/${tableName?lower_case}` | 查询所有记录 |
| GET | `/api/${tableName?lower_case}/page` | 分页查询 |
| GET | `/api/${tableName?lower_case}/{id}` | 根据ID查询 |
| POST | `/api/${tableName?lower_case}` | 新增记录 |
| PUT | `/api/${tableName?lower_case}` | 更新记录 |
| DELETE | `/api/${tableName?lower_case}/{id}` | 删除记录 |

### 请求示例

#### 新增记录
```bash
curl -X POST http://localhost:8080/api/${tableName?lower_case} \
  -H "Content-Type: application/json" \
  -d '{
<#list columns as column>
  <#if !column.autoIncrement>
    "[=column.javaFieldName]": "<#if column.javaType == "String">示例值<#elseif column.javaType == "Integer">1<#elseif column.javaType == "Long">1<#elseif column.javaType == "Boolean">true<#else>null</#if>"<#if column_has_next>,</#if>
  </#if>
</#list>
  }'
```

#### 查询记录
```bash
curl -X GET http://localhost:8080/api/${tableName?lower_case}
```

## 数据表结构

### [=tableName] - ${tableComment!''}

| 字段名 | 类型 | 说明 | 约束 |
|--------|------|------|------|
<#list columns as column>
| [=column.columnName] | [=column.dataType] | [=column.columnComment!''] | <#if column.primaryKey>主键</#if><#if column.autoIncrement> 自增</#if><#if !column.nullable> 非空</#if> |
</#list>

## 开发说明

### 项目结构
```
src/
├── main/
│   ├── java/
│   │   └── [=packageName?replace(".", "/")]/
│   │       ├── [=className]Application.java     # 启动类
│   │       ├── entity/
│   │       │   └── [=className].java            # 实体类
│   │       ├── mapper/
│   │       │   └── [=className]Mapper.java      # 数据访问层
│   │       ├── service/
│   │       │   └── [=className]Service.java     # 业务逻辑层
│   │       └── controller/
│   │           └── [=className]Controller.java  # 控制器
│   └── resources/
│       ├── application.yml                      # 配置文件
│       └── mapper/
│           └── [=className]Mapper.xml           # MyBatis映射文件
└── test/                                        # 测试代码
```

<#if enableSecurity>
- `config/SecurityConfig.java`、`security/` 与 `tenant/` 目录提供JWT鉴权、多租户上下文及请求过滤能力。
</#if>
<#if enableRedis>
- `config/RedisConfig.java` 负责Redis缓存与TTL策略配置。
</#if>

### 扩展开发

1. **添加业务逻辑**: 在Service层添加自定义业务方法
2. **自定义查询**: 在Mapper中添加自定义SQL查询
3. **参数校验**: 使用`@Valid`注解进行参数校验
4. **异常处理**: 自定义异常类和全局异常处理器

## 许可证

本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情

## 联系方式

- 作者: ${author}
- 项目地址: [项目仓库地址]
- 问题反馈: [Issues地址]

---
